resource "aws_launch_template"
GPT-4.icon
EC2インスタンスの起動設定をテンプレートとして管理するリソースです。
以前は resource "aws_launch_configuration" が使われていましたが、現在は Launch Template が推奨 で、より柔軟で新機能に対応しています。
Auto Scaling Group(ASG)やスポットインスタンス、単発の EC2 起動でもこのテンプレートを使って、
AMI、インスタンスタイプ、セキュリティグループ、User Data などの起動設定を共通化・再利用できます。
✅ 基本イメージ
code:text
aws_launch_template
├ AMI ID(OS イメージ)
├ インスタンスタイプ
├ キーペア
├ セキュリティグループ
├ User Data(起動スクリプト)
└ その他 EC2 設定
🎯 主な用途
Auto Scaling Group(ASG)の起動設定
スポットインスタンスの起動テンプレート
EC2 起動のベストプラクティス
EC2 設定のバージョン管理
🔍 基本構造
code:hcl(rb)
resource "aws_launch_template" "example" {
name_prefix = "example-"
image_id = "ami-0abcdef1234567890"
instance_type = "t3.micro"
key_name = "example-key"
network_interfaces {
associate_public_ip_address = true
security_groups = aws_security_group.example.id
}
user_data = base64encode(file("init.sh"))
tag_specifications {
resource_type = "instance"
tags = {
Name = "example-instance"
}
}
}
🎯 主なパラメータ
table:_
パラメータ 説明
name / name_prefix テンプレートの名前(name_prefix はランダムサフィックス付きで推奨)
image_id AMI ID(OSイメージ)
instance_type EC2インスタンスタイプ(例:t3.micro)
key_name SSH キーペア名
network_interfaces セキュリティグループ、パブリックIPの設定
user_data EC2 起動時のスクリプト(base64エンコード必須)
tag_specifications 起動したインスタンスや EBS に自動で付与するタグ
✅ よく使う追加設定
EBS ボリュームの指定
code:hcl(rb)
block_device_mappings {
device_name = "/dev/xvda"
ebs {
volume_size = 30
volume_type = "gp2"
}
}
スポットインスタンスのリクエスト
code:hcl(rb)
instance_market_options {
market_type = "spot"
}
IAM ロールの指定
code:hcl(rb)
iam_instance_profile {
name = "example-role"
}
🔁 Launch Template のバージョン管理
Launch Template は バージョンを持つ ので、新しい AMI で EC2 を起動したいときに
テンプレートだけ更新し、Auto Scaling Group に version = "$Latest" を指定すれば OK。
code:hcl(rb)
launch_template {
id = aws_launch_template.example.id
version = "$Latest"
}
これにより スムーズに EC2 の再デプロイが可能。
✅ Launch Configrationとの違い
table:_
項目 Launch Configuration Launch Template
状態 非推奨 推奨
バージョン管理 なし あり
複数ネットワークインターフェース 非対応 対応
スポットインスタンス対応 限定的 フルサポート